package com.example.protocol.mqtt;

import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.springframework.stereotype.Service;

/**
 * CallBackHandler是用于处理到某个topic消息的通用接口
 */
public interface CallBackHandler extends Cloneable{
    /**
     * 获取这个handler能处理的topic模式
     * @return
     */
    String getHandleableTopic();

    /**
     * 处理topic
     * @param msg 传入收到的MqttMessage消息
     */
    void handleTopic(MqttMessage msg);

    /**
     * 继承Cloneable接口所以必然要实现这个方法
     * 此方法表示返回一个对象，此对象应是自身的克隆，这样每个HandlerThread就可以使用独立的Handler，避免相互影响
     * @return
     */
    Object clone();
}
